<?php
namespace App\Http\Controllers\Home;
use App\Http\Controllers\BaseController;
use Illuminate\Http\Request;

class PushController extends BaseController
{
    /*
    *  苹果消息推送方法
    *  $deviceToken 苹果设备token
    *  $message     消息内容
    */
    public function iosmsgsend(Request $requst)
    {
        $message = '推什么推';
        $deviceToken = '3f1b5a6b2fccb779ca1a6bc5d55062e2449c18bc611cffb6d56e0b5d35b2e3c5';
        $message = strlen($message)>40?mb_substr($message,0,40,'utf-8'):$message;

        $ctx = stream_context_create();

        stream_context_set_option($ctx, 'ssl', 'local_cert', substr(dirname(__FILE__),0,-30).'ck.pem');//证书路径

        stream_context_set_option($ctx, 'ssl', 'passphrase', '123456');



        // Open a connection to the APNS server

        //这个为正式的发布地址

        $fp = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);

        //这个是沙盒测试地址，发布到appstore后记得修改

        //$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err,$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);

        if (!$fp)
            exit("Failed to connect: $err $errstr" . PHP_EOL);
        echo 'Connected to APNS' . PHP_EOL;
        // Create the payload body
        $body['aps'] = array(

            'alert' => $message,

            'sound' => 'default'

        );

        // Encode the payload as JSON

        $payload = json_encode($body);

        // Build the binary notification

        $msg = chr(0) . pack('n', 32).pack('H*',$deviceToken).pack('n', strlen($payload)).$payload;
        // Send it to the server

        $result = fwrite($fp, $msg, strlen($msg));
        if (!$result)
            echo 'Message not delivered' . PHP_EOL;

        else

            echo 'Message successfully delivered' . PHP_EOL;

        // Close the connection to the server

        fclose($fp);


    }

}